#include"SBTree.h"
#include"AVL.h"
#include"RBTRee.h"
#include<map>
#include<time.h>
#include<stdlib.h>
#include"map.h"
#include"set.h"
#include<vector>


void test1()
{
	BSTree bst;
	bst.Insert(18);
	bst.Insert(7);
	bst.Insert(10);
	bst.Insert(8);
	bst.Insert(22);
	bst.Insert(19);
	bst.Insert(20);
	bst.Insert(23);
	bst.Inorder();

	bst.pop(22);
	bst.Inorder();
}
void test2()
{
	BSTree bst;
	bst._Insert(18);
	bst._Insert(7);
	bst._Insert(10);
	bst._Insert(8);
	bst._Insert(22);
	bst._Insert(19);
	bst._Insert(20);
	bst._Insert(23);
	bst.Inorder();

	int nums[10] = { 18,7,10,8,22,19,20,23 };
	for (auto e : nums)
	{
		bst._Pop(e);
		bst.Inorder();
	}
}
void test3()
{
	int nums[] = { 4, 2, 6, 1, 3, 5, 15, 7, 16,14 };
	bit::AVL<int> avl;
	for (auto e : nums)
		avl.insert(e);
	//avl.Inorder();
	puts("");
	if (avl.Isbalance()) puts("yes");
	else puts("no");
}
void test4()
{
	std::map<string, string> m;
	m.insert(make_pair("asdf", "asdf"));
	for (auto e : m)
	{
		std::cout << e.first << "->" << e.second << endl;
	}
}
//void test5()
//{
//	srand(time(nullptr));
//	int nums[110];
//	bit::RBTree<int,int> avl;
//	int n = 10000000;
//	int cnt = 0;
//	while (n--)
//	{
//		int e = rand();
//		avl.insert(make_pair(e,e));
//
//	}
//	//avl.Inorder();
//	puts("");
//	if (avl.Isbalance()) puts("yes");
//	else puts("no");
//}

void test_map()
{
	bit::map<int, int> m;
	m.insert(make_pair(1, 1));
	m.insert(make_pair(2, 1));
	m.insert(make_pair(3, 1));
	m.insert(make_pair(4, 1));
	bit::map<int,int>::iterator it = m.begin();
	for (auto e : m)
	{
		cout << e.first << endl;
	}
	cout<< m[1];
	m[1] = 10;
	cout << m[1] << endl;
}
void test_set()
{
	bit::set<int, int> m;
	m.insert(1);
	m.insert(2);
	m.insert(3);
	m.insert(4);
	bit::set<int, int>::iterator it = m.begin();
	for (auto e : m) cout << e << endl;
}
class Tem
{
public:
private:
	static int a;
};
int Tem::a = 10;
int main()
{
	//test1();
	//test2();
	//test3();
	//test4();
	//test5();

	//test_map();
	//test_set();

	return 0;
}